#ifndef __QCIRCUIT_H__
#define __QCIRCUIT_H__

#include "qubit.h"
#include "qreg.h"
#include "creg.h"
#include "gate.h"
#include <string>
#include <cstdlib>
using namespace std;

class qubit;
class qreg;
class creg;

#define MAX 1024

class qcircuit{
public:
    int nqr, ncr, n;
    qreg * p_qr;        // 保存寄存器状态
    creg * p_cr;        // 记录量子比特测量后塌缩的结果
    qubit * supo;       // 电路所有量子比特的叠加态
    string * p_qstate;  // 电路可视化
    ////
    qcircuit(qreg &, creg &);
    ~qcircuit();

    void h(qubit &);
    void cx(qubit &, qubit &);
    void measure(qubit &, double &);
    // void getAmplitude();
    // void measure();
    void draw();
};

#endif